<?php
namespace Zxf5115\Laravel\Kernel\Controllers\Api;

use Zxf5115\Laravel\Kernel\Controllers\BaseController;

/**
 * @author zhangxiaofei [<1326336909@qq.com>]
 * @dateTime 2025-09-15
 *
 * 接口基础控制器类
 */
abstract class ApiController extends BaseController
{
  /**
   * 默认查询条件
   */
  public array $defaultWhere = [
    ['status', '=' , 1]
  ];

  /**
   * 构造方法注入依赖关系
   */
  public function __construct()
  {
    parent::__construct();

    // 初始化接口控制器
    $this->initializeApi();
  }

  /**
   * 初始化接口控制器
   */
  protected function initializeApi(): void
  {
    // 设置接口控制器专用中间件
    $this->setupApiMiddleware();
  }

  /**
   * 设置接口控制器专用中间件
   */
  protected function setupApiMiddleware(): void
  {
    $this->middleware($this->getApiMiddleware())
         ->except($this->getMiddlewareExceptions());
  }

  /**
   * 获取接口中间件组
   *
   * @return array 接口中间件数组
   */
  protected function getApiMiddleware(): array
  {
    return [
      'white.list', // 白名单认证
      'black.list' // 黑名单认证
    ];
  }

  /**
   * 获取中间件排除的方法列表
   *
   * @return array 中间件排除数组
   */
  protected function getMiddlewareExceptions(): array
  {
    return [
      'index', // 首页接口
    ];
  }
}
